package com.cgt.xiaotao.promotion.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cgt.common.domain.dto.PageDTO;
import com.cgt.xiaotao.promotion.domain.dto.CouponFormDTO;
import com.cgt.xiaotao.promotion.domain.dto.CouponIssueFormDTO;
import com.cgt.xiaotao.promotion.domain.po.Coupon;
import com.cgt.xiaotao.promotion.domain.query.CouponQuery;
import com.cgt.xiaotao.promotion.domain.vo.CouponDetailVO;
import com.cgt.xiaotao.promotion.domain.vo.CouponPageVO;
import com.cgt.xiaotao.promotion.domain.vo.CouponVO;

import java.util.List;

public interface ICouponService extends IService<Coupon> {
    /**
     * 新增优惠券
     * @param dto 优惠券表单
     */
    void saveCoupon(CouponFormDTO dto);

    /**
     * 分页查询优惠券接口-管理端
     * @param query 查询参数
     * @return 分页数据
     */
    PageDTO<CouponPageVO> queryCouponByPage(CouponQuery query);

    /**
     * 修改优惠券
     * @param id 优惠券id
     * @param dto 优惠券表单
     */
    void updateCoupon(Long id, CouponFormDTO dto);

    /**
     * 删除优惠券
     * @param id 优惠券id
     * @param dto 优惠券表单
     */
    void deleteById(Long id,CouponFormDTO dto);

    /**
     * 根据id查询优惠券接口
     * @param id 优惠券id
     * @return 优惠券详情
     */
    CouponDetailVO queryCouponById(Long id);

    /**
     * 发放优惠券接口
     * @param id 优惠券id
     * @param dto 发放优惠券表单
     */
    void issueCoupon(Long id, CouponIssueFormDTO dto);

    /**
     * 暂停发放
     * @param id 优惠券id
     */
    void pauseIssue(Long id);

    /**
     * 查询发放中的优惠券列表
     * @return 发放中的优惠券列表
     */
    List<CouponVO> queryIssuingCoupons();
}
